package org.upo.eps.it.phama.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;

@Entity
@Table(name="far_estado", catalog="phama")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "estado", propOrder = {})
public class Estado  implements Serializable {

     @Id 
     @GeneratedValue(strategy=IDENTITY)
     @Column(name="ID_ESTADO", unique=true, nullable=false)
     private Integer idEstado;
     
     @Column(name="DESCRIPCION", nullable=false)
     private String descripcion;
     
     @Temporal(TemporalType.DATE)
     @Column(name="FECHA", nullable=false, length=10)
     @XmlTransient
     private Date fecha;
     
     @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="estado")
     @XmlTransient
     private Set<PedidoCliente> misPedidosCliente = new HashSet<>(0);
     
     @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="estado")
     @XmlTransient
     private Set<PedidoProveedor> misPedidosProveedor = new HashSet<>(0);

     //<editor-fold defaultstate="collapsed" desc="constructors">
     public Estado() {
     }
     
     public Estado(String descripcion, Date fecha) {
         this.descripcion = descripcion;
         this.fecha = fecha;
     }
     
     public Estado(String descripcion, Date fecha, Set<PedidoCliente> misPedidosCliente, Set<PedidoProveedor> misPedidosProveedor) {
         this.descripcion = descripcion;
         this.fecha = fecha;
         this.misPedidosCliente = misPedidosCliente;
         this.misPedidosProveedor = misPedidosProveedor;
     }
     
     //</editor-fold>
     
     //<editor-fold defaultstate="collapsed" desc="getters & setters">
     public Integer getIdEstado() {
         return this.idEstado;
     }
     
     public void setIdEstado(Integer idEstado) {
         this.idEstado = idEstado;
     }
     
     public String getDescripcion() {
         return this.descripcion;
     }
     
     public void setDescripcion(String descripcion) {
         this.descripcion = descripcion;
     }
     
     public Date getFecha() {
         return this.fecha;
     }
     
     public void setFecha(Date fecha) {
         this.fecha = fecha;
     }
     
     public Set<PedidoCliente> getMisPedidosCliente() {
         return this.misPedidosCliente;
     }
     
     public void setMisPedidosCliente(Set<PedidoCliente> misPedidosCliente) {
         this.misPedidosCliente = misPedidosCliente;
     }
     
     public Set<PedidoProveedor> getMisPedidosProveedor() {
         return this.misPedidosProveedor;
     }
     
     public void setMisPedidosProveedor(Set<PedidoProveedor> misPedidosProveedor) {
         this.misPedidosProveedor = misPedidosProveedor;
     }
     //</editor-fold>

     @Override
     public String toString(){
         return this.descripcion;
     }
     
     public String getFullname(){
         return this.toString();
     }
}


